//import java.util.HashMap;
//import java.util.Map;
////最小覆盖子串
//public class Min_cover_substring {
//    public static void main(String[] args) {
//        String s="ADOBECODEBANC";
//        String t="ABC";
//        Map<Character,Integer> sMap=new HashMap<>();
//        Map<Character,Integer> tMap=new HashMap<>();
//        int i=0;
//        int tLen=t.length();
//        while(i<tLen){
//            char ch=t.charAt(i);
//            if(!tMap.containsKey(ch)){
//                tMap.put(ch,1);
//            }else{
//                int value=tMap.get(ch);
//                tMap.put(ch,value+1);
//            }
//            i++;
//        }
//        i=0;
//        int left=0;
//        int right=0;
//        int sLen=s.length();
//        int count=0;//窗口中的有效字符数
//        String shortS="";
//        int shortLen=0;
//        while(right<sLen){
//            char cur=s.charAt(right);
//            if(sMap.getOrDefault(cur,0)<tMap.getOrDefault(cur,0)){
//                count++;
//            }
//            sMap.put(cur,sMap.getOrDefault(cur,0)+1);
//            while(count==tLen){
//                if(shortLen==0){
//                    shortLen=right-left+1;
//                    shortS=s.substring(left,right+1);
//                }else{
//                    if(right-left+1<shortLen){
//                        shortLen=right-left+1;
//                        shortS=s.substring(left,right+1);
//                    }
//                }
//                cur=s.charAt(left);
//                //校验当前字符是否是有效字符
//                if(sMap.getOrDefault(cur,0)<=tMap.getOrDefault(cur,0)){
//                    //是有效字符，有效字符长度-1
//                    count--;
//                }
//                //移除sMap中关于当前字符的有关信息
//                int temp=sMap.getOrDefault(cur,0);
//                if(temp==1){
//                    sMap.remove(cur);
//                }else{
//                    sMap.put(cur,temp-1);
//                }
//                left++;
//            }
//            right++;
//        }
//
//    }
//}
